package com.itheima.app.exception;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

import java.util.HashMap;
import java.util.Map;

/**
 * Global 全局
 *
 * GlobalExceptionAdvice 全局异常处理类
 *  以后我们程序中的报错 全部由此类进行处理
 */
@ControllerAdvice
public class GlobalExceptionAdvice {

    /**
     * 专门处理业务异常的方法
     * ResponseEntity  专门用于返回的实体封装类
     *  ResponseEntity spring提供的返回数据的封装类
     */
    //定义处理异常的方法
    @ExceptionHandler(BusinessException.class)
    public ResponseEntity businessHandler(Exception e){
        //捕捉到了异常 希望进行处理
        //ResponseEntity.status(500) 返回500的状态码
        //.body(e.getMessage()); 500的响应体信息
        Map<String ,String> map = new HashMap<>();
        //前端要求传入的错误的信息 必须要有key key的名称叫message (探花项目)
        map.put("message" , e.getMessage());
        return ResponseEntity.status(500).body(map);
    }
    /**
     * 万一没有考虑的异常 也进行捕捉
     */
    //定义处理异常的方法
    @ExceptionHandler(Exception.class)
    public ResponseEntity  globalHandler(Exception e){
        Map<String ,String> map = new HashMap<>();
        //前端要求传入的错误的信息 必须要有key key的名称叫message (探花项目)
        map.put("message" , "未知异常,请联系管理员");
        return ResponseEntity.status(500).body(map);
    }
}
